package cn.hinglo.common.annotation;

import cn.hinglo.common.enums.LimitRenderTypeEnum;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * @createTime: 2019/9/10 15:04
 * @author: HingLo
 * @description: 限流注解
 */
@Retention(RUNTIME)
@Target({METHOD, TYPE})
public @interface CurrentLimiting {

    /**
     * 指定时间内 请求的次数
     *
     * @return 返回次数
     */
    int rate() default 10;

    /**
     * 指定的时间,单位默认为秒,默认为1秒
     *
     * @return 返回秒
     */
    int second() default 1;

    /***
     * 限流接口返回数据类型
     * @return 返回数据类型
     */
    LimitRenderTypeEnum renderType() default LimitRenderTypeEnum.JSON;

    /**
     * 被限流后给客户端的响应，响应的内容根据 action 的类型来渲染
     *
     * @return 返回结果
     */
    String renderContent() default "";

}
